#ifndef __CAMERA__EVALUATOR__H__
#define __CAMERA__EVALUATOR__H__

#include "VideoCapture.h"
#include "FrameRenderer.h"
#include "VideoCaptureFactory.h"
#include <memory>

namespace simple_renderer{

class CameraEvaluator{
public:
    CameraEvaluator();
    virtual ~CameraEvaluator();

    int AllocCapture();
    int DeallocCapture();

    int StartCapture();
    int StopCapture();

    void MoveIntoRenderer(std::unique_ptr<FrameRenderer> &frame_renderer);
    std::unique_ptr<FrameRenderer> MoveOutRenderer();

    bool HasRenderer(){
        return _frame_renderer ? true : false;
    }

protected:
    std::unique_ptr<VideoCapture> _video_capture;
    std::unique_ptr<VideoCaptureFactory> _video_capture_factory;
    std::unique_ptr<FrameRenderer> _frame_renderer;
};

}

#endif